<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of TablaHandler
 *
 * @author Julio Arredondo
 */
include_once("TablaResultado.php");
include_once("TablaResultadoOptions.php");

class TablaResultadoHandler {
    //put your code here
    //metodos para la tabla
    
    protected $isInit = false;
    protected $entityTable;
    protected $entityGroup;
    protected $entityTableConfig;

    public function renderEntityTable(){
        if(!$this->isInit){
            $this->initEntityTable();
        }
        $this->entityTable->displayTable();
    }

    protected function initEntityTable(){
        $this->setEntityGroup();
        $this->setEntityTableConfig();
        //asigna la tabla en realidad
        $this->setEntityTable();
        
        $this->isInit = true;
    }



    public function setEntityGroup($entityGroup = null){
        if($entityGroup != null){
            $this->entityGroup = $entityGroup;
        }else if(empty($this->entityGroup)){
            //do extern...
            $this->overridenSetEntityGroup();
        }
    }

    protected function overridenSetEntityGroup(){}


    public function setEntityTableConfig($entityTableConfig = null){
        if($entityTableConfig != null){
            $this->entityTableConfig = $entityTableConfig;
        }else if(empty($this->entityTableConfig)){
            //do extern...
            $this->overridenSetEntityTableConfig();
        }
    }

    protected function overridenEntityTableConfig(){}

    protected function setEntityTable(){
//        if(empty($this->entityGroup)){
//            throw new Exception("Imposible editar registros.");
//        }
        $this->entityTable = new TablaResultado();
        $this->entityTable->setId($this->entityTableConfig["id"]);
        $this->entityTable->setStyleClassByValues($this->entityTableConfig["styleClassByValues"]);
        $this->entityTable->setPrefixIdRow($this->entityTableConfig["prefixIdRow"]);
        //campo sobre cual se le va poner nombre al renglon
        $this->entityTable->setDynamicIdRow($this->entityTableConfig["dynamicIdRow"]);
        /**
         * 4. Establecer cabeceras
         */
        $this->entityTable->setHeaders($this->entityTableConfig["header"]); // Si se envia el 2do param muestra el FOOTER, por default no se muestra
        /**
         * 5. Asignar datos. El arreglo debe tener la forma $arr[0]['campo']  = 'VALOR'
         *    Si se quiere asignar ligas o JS antes de los datos, marcar� un error
         */
        $this->entityTable->setData($this->entityGroup);
        /**
         * 6. De existir JS o LIGAS se asignan
         */
        $this->entityTable->setJS($this->entityTableConfig["js"]);
        $this->entityTable->setLink($this->entityTableConfig["href"], $this->entityTableConfig["hrefVars"]);

        /**
         * 7. Esta funcion sive para poner una liga o JS
         *    a algun elemento de la tabla que no necesariamente es un valor
         *    sino un texto
         */
        $this->entityTable->setExtraLink($this->entityTableConfig["extraLink"]);

        //se agregan los links que con las filas que ignoraran

        $this->entityTable->setLinkIgnoredRowList($this->entityTableConfig["linkIgnoredList"]);


        /**
         * 8. Se establece el cuerpo
         */
        $this->entityTable->setBody();
    }
}
?>
